home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
-
- def getIndex(square):
- file = ord(square[0]) - ord('a')
- rank = ord(square[1]) - ord('1')
- return (7 - rank) * 8 + file
-
-
- def getRankAndFile(index):
- file = index % 8
- rank = 7 - index / 8
- return (file, rank)
-
-
- def reflectField(field):
- outField = 0
- for i in xrange(64):
- if field & LOCATIONS[i]:
- (file, rank) = getRankAndFile(i)
- outField |= LOCATIONS[rank * 8 + file]
- continue
-
- return outField
-
-
- def reflectMoves(inMoves, outMoves):
- for i in xrange(64):
- (file, rank) = getRankAndFile(i)
- outMoves[rank * 8 + file] = reflectField(inMoves[i])
-
-
-
- def printField(field):
- string = '+---+---+---+---+---+---+---+---+\n'
- rowCount = 0
- colour = ' '
- for l in LOCATIONS:
- if field & l:
- string += '|[%s]' % colour
- else:
- string += '| %s ' % colour
- rowCount += 1
- if rowCount == 8:
- rowCount = 0
- string += '|\n+---+---+---+---+---+---+---+---+\n'
- continue
- if colour == ' ':
- colour = '.'
- continue
- colour = ' '
-
- print string
-
- LOCATIONS = [
- 1,
- 2,
- 4,
- 8,
- 16,
- 32,
- 64,
- 128,
- 256,
- 512,
- 1024,
- 2048,
- 4096,
- 8192,
- 16384,
- 32768,
- 65536,
- 131072,
- 262144,
- 524288,
- 1048576,
- 2097152,
- 4194304,
- 8388608,
- 16777216,
- 33554432,
- 67108864,
- 134217728,
- 268435456,
- 536870912,
- 1073741824,
- 0x80000000L,
- 0x100000000L,
- 0x200000000L,
- 0x400000000L,
- 0x800000000L,
- 0x1000000000L,
- 0x2000000000L,
- 0x4000000000L,
- 0x8000000000L,
- 0x10000000000L,
- 0x20000000000L,
- 0x40000000000L,
- 0x80000000000L,
- 0x100000000000L,
- 0x200000000000L,
- 0x400000000000L,
- 0x800000000000L,
- 0x1000000000000L,
- 0x2000000000000L,
- 0x4000000000000L,
- 0x8000000000000L,
- 0x10000000000000L,
- 0x20000000000000L,
- 0x40000000000000L,
- 0x80000000000000L,
- 0x100000000000000L,
- 0x200000000000000L,
- 0x400000000000000L,
- 0x800000000000000L,
- 0x1000000000000000L,
- 0x2000000000000000L,
- 0x4000000000000000L,
- 0x8000000000000000L]
- KNIGHT_MOVES = [
- 0xFFFFFFFFFFFFFFFFL] * 64
- WHITE_PAWN_MOVES = KNIGHT_MOVES[:]
- WHITE_PAWN_TAKES = KNIGHT_MOVES[:]
- BLACK_PAWN_MOVES = KNIGHT_MOVES[:]
- BLACK_PAWN_TAKES = KNIGHT_MOVES[:]
- ROOK_MOVES = KNIGHT_MOVES[:]
- BISHOP_MOVES = KNIGHT_MOVES[:]
- KNIGHT_MOVES = KNIGHT_MOVES[:]
- QUEEN_MOVES = KNIGHT_MOVES[:]
- WHITE_KING_MOVES = KNIGHT_MOVES[:]
- BLACK_KING_MOVES = KNIGHT_MOVES[:]
- INBETWEEN_SQUARES = [
- None] * 64
- for i in xrange(64):
- INBETWEEN_SQUARES[i] = [
- 0x0L] * 64
-
-
- def genMoves():
- for start in xrange(64):
- (f0, r0) = getRankAndFile(start)
- pawnField = 0
- pawnTakeField = 0
- rookField = 0
- bishopField = 0
- knightField = 0
- queenField = 0
- kingField = 0
- for end in xrange(64):
- if end == start:
- continue
-
- (f1, r1) = getRankAndFile(end)
- endField = LOCATIONS[end]
- ibField = 0
- if f0 == f1 and r0 == r1 or abs(f0 - f1) == abs(r0 - r1):
- fstep = cmp(f1, f0)
- rstep = cmp(r1, r0)
- file = f0 + fstep
- rank = r0 + rstep
- count = max(abs(f0 - f1), abs(r0 - r1)) - 1
- for i in xrange(count):
- ibField |= LOCATIONS[(7 - rank) * 8 + file]
- file += fstep
- rank += rstep
-
-
- INBETWEEN_SQUARES[start][end] = ibField
- if f0 == f1:
- if r1 - r0 == 1:
- pawnField |= endField
-
- if r0 == 1 and r1 == 3:
- pawnField |= endField
-
-
- if abs(f0 - f1) == 1 and r1 - r0 == 1:
- pawnField |= endField
- pawnTakeField |= endField
-
- if abs(f0 - f1) * abs(r0 - r1) == 2:
- knightField |= endField
-
- if abs(f0 - f1) == abs(r0 - r1):
- bishopField |= endField
- queenField |= endField
-
- if abs(f0 - f1) * abs(r0 - r1) == 0:
- rookField |= endField
- queenField |= endField
-
- if abs(f0 - f1) <= 1 and abs(r0 - r1) <= 1:
- kingField |= endField
-
- if r0 == r1 and r0 == 0 and f0 == 4 and abs(f0 - f1) == 2:
- kingField |= endField
- continue
-
- WHITE_PAWN_MOVES[start] = pawnField
- WHITE_PAWN_TAKES[start] = pawnTakeField
- ROOK_MOVES[start] = rookField
- BISHOP_MOVES[start] = bishopField
- KNIGHT_MOVES[start] = knightField
- QUEEN_MOVES[start] = queenField
- WHITE_KING_MOVES[start] = kingField
-
- reflectMoves(WHITE_PAWN_MOVES, BLACK_PAWN_MOVES)
- reflectMoves(WHITE_PAWN_TAKES, BLACK_PAWN_TAKES)
- reflectMoves(WHITE_KING_MOVES, BLACK_KING_MOVES)
- move = 60
-
- genMoves()
-